home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / UNIXTOOL / MEMACS / Cmd / Ehelp < prev    next >
Text File  |  1991-06-15  |  6KB  |  321 lines

  1. store-procedure    init-help
  2.  
  3.     clear-message-line
  4.     set %oldscreen $scrname        ;remember the screen we were on
  5.     set %oldmode $modeflag        ;remember the original $modeflag
  6.     set $discmd FALSE
  7.     find-screen "HELP"        ;switch to the help screen
  8.     set $modeflag FALSE
  9.     set %done FALSE            ;not done with help
  10.     find-file EhelpTxt        ;read in the help file!
  11.     sethscreen
  12.     set %helpscreen "Main Menu"    ;start at the main menu
  13.     gethscreen
  14. !endm
  15.  
  16. store-procedure gethscreen    ;switch the current help screen
  17.  
  18. *gethbegin
  19.  
  20.     ;build the window ID line
  21.     1 next-window
  22.     beginning-of-file
  23.     set-mark
  24.     end-of-file
  25.     kill-region
  26.     !if &gre &len $version 5
  27.         insert-string "MicroEMACS version "
  28.     !else
  29.         insert-string "    MicroEMACS version "
  30.     !endif
  31.     insert-string $version
  32.     insert-string "        Help System    "
  33.     insert-string %helpscreen
  34.     beginning-of-line
  35.     unmark-buffer
  36.  
  37.     ;find and display the named helpscreen
  38.     2 next-window
  39.     beginning-of-file
  40.     set %tmp &cat "~n=>" %helpscreen
  41.     !force search-forward %tmp
  42.     !if &seq $status FALSE
  43.         set %helpscreen "Main Menu"
  44.         print "          [Attempt to fetch illegal screen]"
  45.         !goto gethbegin
  46.     !endif
  47.     2 next-line
  48.     beginning-of-line
  49.     1 redraw-display
  50.     update-screen
  51.     set %topline $curline
  52.     set %bottomline &add $curline 20
  53.  
  54.     firstsel    ;position us at the first selection
  55.  
  56. !endm
  57.  
  58. store-procedure sethscreen    ;set up the windows on the help screen
  59.  
  60.     find-screen "HELP"
  61.     delete-other-windows
  62.     beginning-of-file
  63.     split-current-window
  64.     0 resize-window
  65.     add-mode "red"
  66.     add-mode WHITE
  67.     select-buffer "Window ID"
  68.     next-window
  69.     split-current-window
  70.     19 resize-window
  71.     add-mode "blue"
  72.     add-mode WHITE
  73.     next-window
  74.     add-mode "red"
  75.     add-mode WHITE
  76.     beginning-of-file
  77.  
  78. !endm
  79.  
  80. store-procedure firstsel    ;position us at the first selection
  81.  
  82.     9 set-mark        ;remember where we started from
  83.     set %endscreen &add $curline 20
  84.     search-forward "< >"    ;look for a selection
  85.     !if &gre $curline %endscreen
  86.  
  87.         ;no selections on this screen!
  88.         9 goto-mark
  89.         set %selflag FALSE
  90.     !else
  91.         2 backward-character
  92.         set %selflag TRUE
  93.         8 set-mark
  94.     !endif
  95.  
  96. !endm
  97.  
  98. store-procedure setsel        ;highlight the current selection
  99.  
  100.     !if &seq %selflag TRUE
  101.         delete-next-character
  102.         insert-string "*"
  103.         backward-character
  104.         unmark-buffer
  105.     !endif
  106. !endm
  107.  
  108. store-procedure clearsel        ;clear the current selection
  109.  
  110.     !if &seq %selflag TRUE
  111.         delete-next-character
  112.         insert-string " "
  113.         backward-character
  114.         unmark-buffer
  115.     !endif
  116. !endm
  117.  
  118. store-procedure nextcmd
  119.  
  120.     !if &seq $pending FALSE
  121.         update-screen
  122.     !endif
  123.     set %cmd >cmd
  124.     set %cmd &bind %cmd
  125.     clear-message-line
  126.  
  127. !endm
  128.  
  129. store-procedure execloop    ;execute a user screen
  130.  
  131.     setsel        ;mark the current selection
  132.     nextcmd        ;get the command
  133.     clearsel    ;clear the selection
  134.     execcmd        ;execute the command
  135.  
  136. !endm
  137.  
  138. store-procedure execcmd        ;execute the current command
  139.  
  140.     !if &seq %selflag TRUE
  141.  
  142.         !if &seq %cmd "forward-character"
  143.             forward-selection
  144.             !return
  145.         !endif
  146.  
  147.         !if &seq %cmd "backward-character"
  148.             backward-selection
  149.             !return
  150.         !endif
  151.  
  152.         !if &seq %cmd "next-line"
  153.             next-selection
  154.             !return
  155.         !endif
  156.  
  157.         !if &seq %cmd "previous-line"
  158.             previous-selection
  159.             !return
  160.         !endif
  161.  
  162.         !if &seq %cmd "newline"
  163.             select-this
  164.             !return
  165.         !endif
  166.     !endif
  167.  
  168.     !if &seq %cmd "next-page"
  169.         next-hscreen
  170.         !return
  171.     !endif
  172.  
  173.     !if &seq %cmd "newline"
  174.         next-hscreen
  175.         !return
  176.     !endif
  177.  
  178.     !if &seq %cmd "previous-page"
  179.         previous-hscreen
  180.         !return
  181.     !endif
  182.  
  183.     !if &seq %cmd "beginning-of-file"
  184.         set %helpscreen "Main Menu"
  185.         gethscreen
  186.         !return
  187.     !endif
  188.  
  189.     !if &seq %cmd "exit-emacs"
  190.         exit-help
  191.         !return
  192.     !endif
  193.  
  194.     print "              [Not a legal command at this time]"
  195.  
  196. !endm
  197.  
  198. store-procedure forward-selection
  199.  
  200.     search-forward "< >"
  201.     !if &gre $curline %bottomline
  202.         set $curline %topline
  203.         search-forward "< >"
  204.     !endif
  205.     2 backward-character
  206.     8 set-mark
  207.  
  208. !endm
  209.  
  210. store-procedure backward-selection
  211.  
  212.     search-reverse "< >"
  213.     !if &less $curline %topline
  214.         set $curline %bottomline
  215.         search-reverse "< >"
  216.     !endif
  217.     1 forward-character
  218.     8 set-mark
  219.  
  220. !endm
  221.  
  222. store-procedure next-selection
  223.  
  224.     set %target $curcol
  225.     forward-selection
  226.     !while ¬ &equ %target $curcol
  227.         forward-selection
  228.     !endwhile
  229.  
  230. !endm
  231.  
  232. store-procedure previous-selection
  233.  
  234.     set %target $curcol
  235.     backward-selection
  236.     !while ¬ &equ %target $curcol
  237.         backward-selection
  238.     !endwhile
  239.  
  240. !endm
  241.  
  242. store-procedure select-this    ;select the currently highlighted selection
  243.  
  244.     next-word        ;jump to the beginning of the selection
  245.     7 set-mark        ;mark it so we can come back!
  246.     set-mark
  247.     set %tmpline $curline    ;remember what line we are on
  248.     search-forward "< >"    ;find the beginning of the next selection
  249.     !if ¬ &equ %tmpline $curline
  250.  
  251.         ;we are no longer on the same line, select the whole line
  252.         7 goto-mark
  253.         end-of-line
  254.     !else
  255.  
  256.         ;select up to this selection
  257.         4 backward-character
  258.     !endif
  259.  
  260.     ;get the selection
  261.     copy-region
  262.     set %selection &trim $kill
  263. ;    print &cat &cat "[selecting :" %selection ":]"
  264.     set %helpscreen %selection
  265.     gethscreen
  266. !endm
  267.  
  268. store-procedure next-screen
  269.  
  270.     search-reverse "NEXT["
  271.     set-mark
  272.     search-forward "]"
  273.     backward-character
  274.     copy-region
  275.     set %helpscreen $kill
  276.     gethscreen
  277.  
  278. !endm
  279.  
  280. store-procedure next-hscreen
  281.  
  282.     search-reverse "NEXT["
  283.     5 forward-character
  284.     set-mark
  285.     search-forward "]"
  286.     backward-character
  287.     copy-region
  288.     set %helpscreen $kill
  289.     gethscreen
  290.  
  291. !endm
  292.  
  293. store-procedure previous-hscreen
  294.  
  295.     search-reverse "PREV["
  296.     5 forward-character
  297.     set-mark
  298.     search-forward "]"
  299.     backward-character
  300.     copy-region
  301.     set %helpscreen $kill
  302.     gethscreen
  303.  
  304. !endm
  305.  
  306. store-procedure exit-help
  307.  
  308.     find-screen %oldscreen
  309.     set $modeflag %oldmode
  310.     set $discmd TRUE
  311.     set %done TRUE
  312.  
  313. !endm
  314.  
  315. ;    Help main program
  316.  
  317. init-help
  318. !while ¬ %done
  319.     execloop
  320. !endwhile
  321.